TypeScript中的类
访问修饰符
| 修饰符 | 类内部 | 子类 | 类外部 |
|---|---|---|---|
| public | 可访问 | 可访问 | 可访问 |
| protected | 可访问 | 可访问 | 不可访问 |
| private | 可访问 | 不可访问 | 不可访问 |
class UserService {
private apiUrl: string
protected token: string | null = null
constructor(apiUrl: string) {
this.apiUrl = apiUrl
}
// 简写方式(参数属性)
// constructor(private apiUrl: string) {}
}
typescript
参数属性简写
TypeScript允许在构造函数参数上直接声明修饰符,自动创建并初始化同名属性:
class User {
constructor(
public name: string,
private age: number,
readonly id: number
) {}
}
const user = new User('Alice', 25, 1)
console.log(user.name) // 'Alice'
typescript
接口实现
interface Serializable {
serialize(): string
}
class User implements Serializable {
constructor(public name: string, public email: string) {}
serialize(): string {
return JSON.stringify({ name: this.name, email: this.email })
}
}
typescript
抽象类
abstract class BaseService {
abstract getEndpoint(): string
async findAll(): Promise<any[]> {
const response = await fetch(this.getEndpoint())
return response.json()
}
}
class UserService extends BaseService {
getEndpoint(): string {
return '/api/users'
}
}
typescript
装饰器(NestJS核心)
NestJS大量使用装饰器模式:
@Controller('users')
class UserController {
@Get()
findAll() {}
@Post()
@UseGuards(AuthGuard)
create(@Body() dto: CreateUserDto) {}
}
typescript
↑